/*
* Created on 15.12.2003
*/
package vitalsWindow;
import org.eclipse.swt.*;
import org.eclipse.swt.widgets.*;
import org.eclipse.swt.graphics.*;
import org.eclipse.swt.events.*;
import vitalsFacade.*;
/**
* <code>ClinicalGUI</code> Is the userinterface of CIS. Provides access to
* the system's full functionality and shows the patient's data.
*
* @author Sascha Hemminger
* @version 2006-02-10
*/
public class ClinicalGUI {
private Image crossImage;
private Display display;
private VitalsFacade facade;
private Button female, male, loadButton, shock, upDate, close, aware,
verbal, pain, unresponsive;
private Text height, weight, bmi, heartRate, breathRate, loadName,
systolic, diastolic;
private Label loadNameLabel, genderLabel, heightLabel, weightLabel, ft_in,
pounds, bmiLabel, kgmm, bmiName, heartRateLabel, heartRateName,
heartBeat, breathRateLabel, breathRateName, breathMin,
bloodPressureLabel, mmHg, mmhg2, systolicName, diastolicName,
systolicLabel, diastolicLabel, locLabel;
private MouseAdapter mouseAdapter = new MouseAdapter() {
public void mouseDown(MouseEvent e) {
clicked(e.getSource());
}
};
private Composite patient, values, general, genderComp;
private Shell shell;
private Color white, green, yellow, red, blue;
/**
* Constructor initializes application and shows window.
*/
public ClinicalGUI() {
facade = new VitalsFacade(null);
display = new Display();
shell = new Shell(display);
//crossImage = new Image(display,"cross.png");
//welcomeScreen();
setUp();
}
private void clicked(Object whatClicked) {
if (whatClicked == close)
shell.close();
if (whatClicked == loadButton) {
try {
facade.setSubject(loadName.getText());
loadData();
} catch (NullPointerException npe) {
MessageBox box = new MessageBox(shell);
box
.setMessage("Not an existing Patient: "
+ loadName.getText());
box.setText("Error");
box.open();
}
}
if (whatClicked == upDate) {
if (facade.getSubject() == null) {
MessageBox box = new MessageBox(shell);
box.setMessage("No Patient loaded!");
box.setText("Error");
box.open();
return;
}
setGender();
setHeight();
setWeight();
setBreathRate();
setHeartRate();
setSystolicPressure();
setDiastolicPressure();
setLOC();
setShock();
facade.saveAttributes();
loadData();
}
}
private void getBMIName() {
String bmiString = facade.getBMIName();
bmiName.setText(bmiString);
if (bmiString.equals("normal"))
bmiName.setBackground(shell.getBackground());
if (bmiString.equals("underweight"))
bmiName.setBackground(blue);
if (bmiString.equals("overweight"))
bmiName.setBackground(yellow);
if (bmiString.equals("obese"))
bmiName.setBackground(red);
}
private void getBreathRateName() {
String breathString = facade.getBreathingRateName();
breathRateName.setText(breathString);
if (breathString.equals("normal"))
breathRateName.setBackground(shell.getBackground());
if (breathString.equals("slow"))
breathRateName.setBackground(blue);
if (breathString.equals("fast"))
breathRateName.setBackground(red);
}
private void getDiastolicName() {
String diastolicString = facade.getBloodPressureDiastolicName();
diastolicName.setText(diastolicString);
if (diastolicString.equals("normal"))
;
diastolicName.setBackground(shell.getBackground());
if (diastolicString.equals("low"))
diastolicName.setBackground(blue);
if (diastolicString.equals("high"))
diastolicName.setBackground(red);
}
private void getGender() {
String gender = facade.getGender();
if (gender.equals("male")) {
male.setSelection(true);
female.setSelection(false);
}
if (gender.equals("female")) {
female.setSelection(true);
male.setSelection(false);
}
}
private void getHeartRateName() {
String heartString = facade.getHeartRateName();
heartRateName.setText(heartString);
if (heartString.equals("normal"))
heartRateName.setBackground(shell.getBackground());
if (heartString.equals("slow"))
heartRateName.setBackground(blue);
if (heartString.equals("fast"))
heartRateName.setBackground(red);
}
private void getLOC() {
String loc = facade.getLevelOfConsciousness();
if (loc.equals("aware")) {
aware.setSelection(true);
verbal.setSelection(false);
pain.setSelection(false);
unresponsive.setSelection(false);
aware.setBackground(shell.getBackground());
verbal.setBackground(shell.getBackground());
pain.setBackground(shell.getBackground());
unresponsive.setBackground(shell.getBackground());
}
if (loc.equals("verbal")) {
aware.setSelection(false);
verbal.setSelection(true);
pain.setSelection(false);
unresponsive.setSelection(false);
aware.setBackground(shell.getBackground());
verbal.setBackground(green);
pain.setBackground(shell.getBackground());
unresponsive.setBackground(shell.getBackground());
}
if (loc.equals("pain")) {
aware.setSelection(false);
verbal.setSelection(false);
pain.setSelection(true);
unresponsive.setSelection(false);
aware.setBackground(shell.getBackground());
verbal.setBackground(shell.getBackground());
pain.setBackground(yellow);
unresponsive.setBackground(shell.getBackground());
}
if (loc.equals("unresponsive")) {
aware.setSelection(false);
verbal.setSelection(false);
pain.setSelection(false);
unresponsive.setSelection(true);
aware.setBackground(shell.getBackground());
verbal.setBackground(shell.getBackground());
pain.setBackground(shell.getBackground());
unresponsive.setBackground(red);
}
}
private void getShock() {
if (facade.getShock()) {
shock.setSelection(true);
shock.setText("Patient is in shock!");
shock.setBackground(red);
}
if (!facade.getShock()) {
shock.setSelection(false);
shock.setText("no shock");
shock.setBackground(shell.getBackground());
}
}
private void getSystolicName() {
String systolicString = facade.getBloodPressureSystolicName();
systolicName.setText(systolicString);
if (systolicString.equals("normal"))
systolicName.setBackground(shell.getBackground());
if (systolicString.equals("low"))
systolicName.setBackground(blue);
if (systolicString.equals("high"))
systolicName.setBackground(red);
}
/**
* Loads all data for a patient.
*/
public void loadData() {
facade.loadAttributes();
getGender();
height.setText(facade.getHeight());
weight.setText(facade.getWeight());
bmi.setText(facade.getBMI().substring(0, 5));
getBMIName();
heartRate.setText(facade.getHeartRate());
getHeartRateName();
breathRate.setText(facade.getBreathingRate());
getBreathRateName();
systolic.setText(facade.getBloodPressureSystolic());
getSystolicName();
diastolic.setText(facade.getBloodPressureDiastolic());
getDiastolicName();
getLOC();
getShock();
}
private void setBreathRate() {
facade.setBreathingRate(breathRate.getText());
}
private void setDiastolicPressure() {
facade.setBloodPressureDiastolic(diastolic.getText());
}
private void setGender() {
if (female.getSelection())
facade.setGender("female");
if (male.getSelection())
facade.setGender("male");
}
private void setHeartRate() {
facade.setHeartRate(heartRate.getText());
}
private void setHeight() {
facade.setHeight(height.getText());
}
private void setLOC() {
if (aware.getSelection())
facade.setLevelOfConsciousness("aware");
if (verbal.getSelection())
facade.setLevelOfConsciousness("verbal");
if (pain.getSelection())
facade.setLevelOfConsciousness("pain");
if (unresponsive.getSelection())
facade.setLevelOfConsciousness("unresponsive");
}
private void setShock() {
if (shock.getSelection())
facade.setShock(true);
if (!shock.getSelection())
facade.setShock(false);
}
private void setSystolicPressure() {
facade.setBloodPressureSystolic(systolic.getText());
}
private void setUp() {
patient = new Composite(shell, SWT.BORDER);
values = new Composite(shell, SWT.BORDER);
general = new Composite(shell, SWT.BORDER);
genderComp = new Composite(patient, SWT.NONE);
white = new Color(display, 255, 255, 255);
green = new Color(display, 50, 200, 50);
yellow = new Color(display, 245, 245, 0);
red = new Color(display, 255, 0, 0);
blue = new Color(display, 0, 0, 245);
patient.setBounds(10, 10, 390, 170);
values.setBounds(10, 190, 390, 160);
general.setBounds(10, 360, 390, 100);
loadNameLabel = new Label(patient, SWT.NONE);
genderLabel = new Label(genderComp, SWT.NONE);
female = new Button(genderComp, SWT.RADIO | SWT.CENTER);
male = new Button(genderComp, SWT.RADIO | SWT.CENTER);
heightLabel = new Label(patient, SWT.NONE);
height = new Text(patient, SWT.NONE);
ft_in = new Label(patient, SWT.CENTER);
weightLabel = new Label(patient, SWT.NONE);
weight = new Text(patient, SWT.NONE);
pounds = new Label(patient, SWT.CENTER);
bmiLabel = new Label(patient, SWT.NONE);
bmi = new Text(patient, SWT.NONE);
kgmm = new Label(patient, SWT.CENTER);
bmiName = new Label(patient, SWT.CENTER);
heartRateLabel = new Label(values, SWT.NONE);
heartRate = new Text(values, SWT.NONE);
heartRateName = new Label(values, SWT.CENTER);
heartBeat = new Label(values, SWT.CENTER);
loadName = new Text(patient, SWT.BORDER);
loadButton = new Button(patient, SWT.BUTTON1);
breathRateLabel = new Label(values, SWT.NONE);
breathRate = new Text(values, SWT.NONE);
breathMin = new Label(values, SWT.CENTER);
breathRateName = new Label(values, SWT.CENTER);
bloodPressureLabel = new Label(values, SWT.NONE);
systolic = new Text(values, SWT.CENTER);
diastolic = new Text(values, SWT.CENTER);
mmHg = new Label(values, SWT.CENTER);
mmhg2 = new Label(values, SWT.CENTER);
systolicName = new Label(values, SWT.CENTER);
diastolicName = new Label(values, SWT.CENTER);
systolicLabel = new Label(values, SWT.RIGHT);
diastolicLabel = new Label(values, SWT.RIGHT);
locLabel = new Label(general, SWT.NONE);
shock = new Button(general, SWT.CHECK | SWT.CENTER);
upDate = new Button(shell, SWT.BUTTON1);
close = new Button(shell, SWT.BUTTON1);
genderComp.setBounds(10, 50, 390, 30);
loadNameLabel.setText("Patient:");
loadNameLabel.setBounds(10, 10, 50, 30);
genderLabel.setText("Gender:");
genderLabel.setBounds(0, 0, 60, 20);
female.setBounds(100, 0, 80, 20);
female.setText("female");
male.setBounds(190, 0, 80, 20);
male.setText("male");
loadName.setBackground(white);
loadName.setText("enter name");
loadName.setBounds(110, 10, 170, 30);
loadButton.setText("search");
loadButton.setSize(80, 30);
loadButton.setLocation(290, 10);
heightLabel.setText("Height:");
heightLabel.setBounds(10, 80, 50, 20);
height.setBackground(white);
height.setBounds(110, 80, 80, 20);
ft_in.setText("inches");
ft_in.setBounds(200, 80, 80, 20);
weightLabel.setText("Weight:");
weightLabel.setBounds(10, 110, 50, 20);
weight.setBackground(white);
weight.setBounds(110, 110, 80, 20);
pounds.setText("pounds");
pounds.setBounds(200, 110, 80, 20);
bmiLabel.setText("B.M.I.:");
bmiLabel.setBounds(10, 140, 50, 20);
bmi.setBackground(white);
bmi.setEditable(false);
bmi.setBounds(110, 140, 80, 20);
kgmm.setText("kg/m�");
kgmm.setBounds(200, 140, 80, 20);
bmiName.setBounds(290, 140, 80, 20);
heartRateLabel.setText("Heart Rate:");
heartRateLabel.setBounds(10, 10, 70, 20);
heartRate.setBackground(white);
heartRate.setBounds(110, 10, 80, 20);
heartBeat.setText("beats/min");
heartBeat.setBounds(200, 10, 80, 20);
heartRateName.setBounds(290, 10, 80, 20);
breathRateLabel.setText("Breathing Rate:");
breathRateLabel.setBounds(10, 40, 90, 20);
breathRate.setBackground(white);
breathRate.setBounds(110, 40, 80, 20);
breathMin.setText("breaths/min");
breathMin.setBounds(200, 40, 80, 20);
breathRateName.setBounds(290, 40, 80, 20);
bloodPressureLabel.setText("Blood Pressure:");
bloodPressureLabel.setBounds(10, 70, 90, 20);
systolicLabel.setText("Systolic");
systolicLabel.setBounds(40, 100, 60, 20);
systolic.setBackground(white);
systolic.setBounds(110, 100, 80, 20);
mmHg.setText("mm Hg");
mmHg.setBounds(200, 100, 80, 20);
systolicName.setBounds(290, 100, 80, 20);
diastolicLabel.setText("Diastolic");
diastolicLabel.setBounds(40, 130, 60, 20);
diastolic.setBackground(white);
diastolic.setBounds(110, 130, 80, 20);
mmhg2.setText("mm Hg");
mmhg2.setBounds(200, 130, 80, 20);
diastolicName.setBounds(290, 130, 80, 20);
locLabel.setBounds(10, 10, 90, 20);
locLabel.setText("Consciousness:");
shock.setBounds(10, 70, 370, 20);
aware = new Button(general, SWT.RADIO | SWT.CENTER);
verbal = new Button(general, SWT.RADIO | SWT.CENTER);
pain = new Button(general, SWT.RADIO | SWT.CENTER);
unresponsive = new Button(general, SWT.RADIO | SWT.CENTER);
aware.setText("aware");
verbal.setText("verbal");
pain.setText("pain");
unresponsive.setText("unresponsive");
aware.setBounds(10, 40, 80, 20);
verbal.setBounds(100, 40, 80, 20);
pain.setBounds(195, 40, 80, 20);
unresponsive.setBounds(280, 40, 100, 20);
upDate.setText("update");
upDate.setBounds(110, 470, 80, 25);
close.setText("close");
close.setBounds(200, 470, 80, 25);
close.addMouseListener(mouseAdapter);
loadButton.addMouseListener(mouseAdapter);
upDate.addMouseListener(mouseAdapter);
shell.setSize(417, 540);
shell.setText("Clinical Information System");
shell.setImage(crossImage);
// patient.pack();
// values.pack();
// general.pack();
// genderComp.pack();
// shell.pack();
start();
}
private void setWeight() {
facade.setWeight(weight.getText());
}
private void start() {
shell.open();
while (!shell.isDisposed()) {
if (!display.readAndDispatch())
display.sleep();
}
//crossImage.dispose();
display.dispose();
}
private void welcomeScreen() {
Shell welcome = new Shell(display);
Image cisImage = new Image(display, "cis.bmp");
GC gc = new GC(welcome);
welcome.setSize(400, 400);
welcome.setText("Clinical Information System");
welcome.setImage(crossImage);
welcome.open();
gc.drawImage(cisImage, 0, 0);
while (!welcome.isDisposed()) {
if (display.readAndDispatch())
display.sleep();
}
cisImage.dispose();
welcome.dispose();
setUp();
}
}
|